package com.zjsru.plan2024.oneday;

/**
 * @Author: cookLee
 * @Date: 2024-01-03
 * 从链表中移除节点
 */
public class RemoveNodes {

    /**
     * 主:移除每个右侧有一个更大数值的节点。
     * \
     * 输入：head = [5,2,13,3,8]
     * 输出：[13,8]
     * 解释：需要移除的节点是 5 ，2 和 3 。
     * - 节点 13 在节点 5 右侧。
     * - 节点 13 在节点 2 右侧。
     * - 节点 8 在节点 3 右侧。
     * \
     * 输入：head = [1,1,1,1]
     * 输出：[1,1,1,1]
     * 解释：每个节点的值都是 1 ，所以没有需要移除的节点。
     * \
     * @param args args
     */
    public static void main(String[] args) {
        ListNode head  = new ListNode(5,new ListNode(2,new ListNode(13,new ListNode(3,new ListNode(8)))));
        RemoveNodes removeNodes = new RemoveNodes();
        System.out.println(removeNodes.removeNodes(head));
    }

    /**
     * 删除节点：递归
     *
     * @param head 封头
     * @return {@link ListNode}
     */
    public ListNode removeNodes(ListNode head) {
        if(head == null){
            return null;
        }
        head.next = this.removeNodes(head.next);
        if(head.next != null && head.val < head.next.val){
            return head.next;
        }else{
            return head;
        }
    }

}
